package com.chatTools.handler;

import com.chatTools.message.GroupCreateRequestMessage;
import com.chatTools.message.GroupCreateResponseMessage;
import com.chatTools.server.session.factory.GroupSessionFactory;
import com.chatTools.server.session.inter.IGroupSession;
import com.chatTools.server.session.pojo.Group;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.util.List;
import java.util.Set;

/**
 * @author： pang-yun
 * @date： 2021-09-17 16:46
 * 功能目的 ：用于  创建 群聊 请求 处理器
 */
@ChannelHandler.Sharable
public class GroupCreateRequestMessageHandler extends SimpleChannelInboundHandler<GroupCreateRequestMessage> {
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, GroupCreateRequestMessage msg) throws Exception {
        String groupName = msg.getGroupName();
        Set<String> members = msg.getMembers();

        // 拿到群管理器
        IGroupSession groupSession = GroupSessionFactory.getGroupSession();
        Group group = groupSession.createGroup(groupName, members);
        if (group == null) {
            // 发生群聊创建成功的消息
            ctx.writeAndFlush(new GroupCreateResponseMessage(true, "创建群聊成功！！"));
            // 向 被拉入群的所有成员 发送被拉入群的消息
            List<Channel> channelList = groupSession.getMembersChannel(groupName);
            channelList.stream().forEach(channel -> {
                channel.writeAndFlush(new GroupCreateResponseMessage(true, "你已经被拉入群聊:" + groupName));
            });
        } else {
            ctx.writeAndFlush(new GroupCreateResponseMessage(false, groupName + ": 此群已经存在了！！"));
        }
    }
}
